/**
 * 
 */
package com.rhf.core.db.implementations.postgresql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.rhf.core.db.implementations.Base;
import com.rhf.core.db.interfaces.Gestionnaire;
import com.rhf.core.dto.GestionnaireVO;

/**
 * @author fabiensaulnier
 * 
 */
public class GestionnaireImp extends Base implements Gestionnaire {

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.rhf.core.db.interfaces.Gestionnaire#contructeur(java.sql.ResultSet)
	 */
	public GestionnaireVO contructeur(ResultSet rs) throws Exception {

		GestionnaireVO gestionnaireVO = new GestionnaireVO();

		try {
			gestionnaireVO.setCompetitionId(rs.getInt("competition_id"));
			gestionnaireVO.setUtilisateurId(rs.getInt("utilisateur_id"));
		} catch (Exception e) {
			this.appLog.error(e.getMessage(), e);
			throw e;
		}

		return gestionnaireVO;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @seecom.rhf.dao.interfaces.Gestionnaire#ajouterGestionnaire(com.rhf.core.db.
	 * valuesobjects.GestionnaireVO)
	 */
	public int ajouterGestionnaire(GestionnaireVO gestionnaireVO)
			throws Exception {

		Connection conn = null;
		PreparedStatement stmt = null;
		int nbLigneAffecte = 0;

		// Requ�te SQL
		String query = "INSERT INTO gestionnaire ";
		query += "(utilisateur_id, competition_id) ";
		query += "VALUES (?, ?)";

		try {
			// Connexion � la base de donn�es
			conn = getConnection();
			stmt = conn.prepareStatement(query);

			// D�finition des param�tres (?)
			int i = 1;
			stmt.setInt(i++, gestionnaireVO.getUtilisateurId());
			stmt.setInt(i++, gestionnaireVO.getCompetitionId());

			// Ex�cution de la requ�te
			this.appLog.debug(stmt.toString());
			nbLigneAffecte = stmt.executeUpdate();

		} catch (Exception e) {
			this.appLog.error(e.getMessage(), e);
			throw e;
		} finally {
			closeResources(null, stmt, conn);
		}

		return nbLigneAffecte;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.rhf.core.db.interfaces.Gestionnaire#supprimerGestionnaire(com.rhf.core.db
	 * .valuesobjects.GestionnaireVO)
	 */
	public int supprimerGestionnaire(GestionnaireVO gestionnaireVO)
			throws Exception {

		Connection conn = null;
		PreparedStatement stmt = null;
		int nbLigneAffecte = 0;

		// Requ�te SQL
		String query = "DELETE FROM saison ";
		query += "WHERE utilisateur_id = ? ";
		query += "AND competition_id = ?";

		try {
			// Connexion � la base de donn�es
			conn = getConnection();
			stmt = conn.prepareStatement(query);

			// D�finition des param�tres (?)
			stmt.setInt(1, gestionnaireVO.getUtilisateurId());
			stmt.setInt(2, gestionnaireVO.getCompetitionId());

			// Ex�cution de la requ�te
			this.appLog.debug(stmt.toString());
			nbLigneAffecte = stmt.executeUpdate();
		} catch (Exception e) {
			this.appLog.error(e.getMessage(), e);
			throw e;
		} finally {
			closeResources(null, stmt, conn);
		}

		return nbLigneAffecte;
	}

}
